#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "types.h"
#include "bas_niveau.h"
#include "haut_niveau.h"
#include "operations.h"

int main() {

	// Dés le début du programme on rempli la liste chaînée
	Liste *l = remplirListe();
	int choix = 0;

	CLEAR();

		printf("------------------------------------------------------------------------------------------\n");
		printf("| %11c Programme Morse - Création par EILRICH Laurent et CERATI Boris %11c |\n", ' ', ' ');
		printf("------------------------------------------------------------------------------------------\n\n");

	// Tant que l'utilisateur ne veut pas quitter le programme, on lui affiche le menu
	do {
		printf("\t------------------------------\n");
		printf("\t| %10c Menu %10c | \n", ' ', ' ');
		printf("\t------------------------------\n\n");
		printf("\t1.  Éditeur de texte\n");
		printf("\t2.  Traduction d'un fichier texte en morse\n");
		printf("\t3.  Traduction d'un fichier morse en texte\n");
		printf("\t4.  Ajouter une lettre dans la liste chaînée\n");
		printf("\t5.  Supprimer une lettre de la liste chaînée\n");
		printf("\t6.  Afficher la liste chaînée\n");
		printf("\t7.  Supprimer un fichier\n");
		printf("\t8.  Afficher un fichier\n");
		printf("\t9.  Lister les fichiers du dossier courant\n");
		printf("\t10. Quitter le programme\n");

		// Demande du choix par rapport au menu ci-dessus
		do {
			printf("\nQue voulez-vous faire : ");
			scanf("%d", &choix);
			viderBuffer();
		} while(choix < 1 || choix > 10);
		CLEAR();

		// Appel de la bonne fonction selon le choix de l'utilisateur
		switch(choix) {

			case 1 :
				printf("\t\t********** Éditeur de texte **********\n\n");
				editeurTxt();
			break;
			
			case 2 :
				printf("\t\t********** Traducteur texte -> morse **********\n\n");
				txtToMorse(l);
			break;
			
			case 3 :
				printf("\t\t********** Traducteur morse -> texte **********\n\n");
				morseToTxt(l);
			break;
			
			case 4 :
				printf("\t\t********** Ajouter une lettre dans la liste chaînée **********\n\n");
				ajouterLettreDansListe(l);
			break;

			case 5 :
				printf("\t\t********** Supprimer une lettre de la liste chaînée **********\n\n");
				supprimerLettreDansListe(l);
			break;
			
			case 6 :
				printf("\t\t********** Affichage la liste chaînée **********\n\n");
				afficherListe(l);
			break;
			
			case 7 :
				printf("\t\t********** Supprimer un fichier **********\n\n");
				supprimerFichier();
			break;

			case 8 :
				afficherFic();
			break;

			case 9 :
				listeFichiers();
			break;

			case 10 :
				exit(EXIT_SUCCESS);
			break;
		}

	} while(choix != 10);

	viderListe(l);
	
	return EXIT_SUCCESS;
}